As software systems are created they implement a complex web of caller/provider relationships between various applications and data sources. As changes are made in a system it is presently left to the people who made those changes to properly document how the system has been changed. If no documentation is created then there is no effective way to determine how future changes or additions will impact the system. In the past there have been efforts to manually create metadata repositories for documenting the structure and changes made in a system; however, they were quickly abandoned due to a number of reasons. One reason for abandonment was the large number of man hours needed to create and maintain the repository. Another reason was the fact that the integrity of the entire repository is put in question even if only one change is not properly updated in the repository. Once the integrity is questioned people are less likely to take the time to make future updates since it will add little or no value to the repository.
This problem is further exacerbated in an enterprise where multiple systems are communicating with each other. Still further complexity is added since as an enterprise grows and changes, legacy systems within the enterprise might not present data in a useful way for newer systems that are created. As such there is created a middleware transaction manager that enables communication between various systems.
Within an enterprise the number of man hours needed to manually create a metadata repository for the entire enterprise increases along with the number of systems operating within that enterprise and the number of transactions that need to be managed by the middleware. Further, since there are more changes occurring across an enterprise than just within a single system, there are more people responsible for updating the repository and there is a greater chance that updates to the repository won't be made, causing the repository's utility to be reduced due to the data's lack of integrity. As such, it has not been feasible to create and maintain such a repository to date.